Arduino 使用SIM900

您所在的位置:网站首页 arduino uno软串口有哪些 Arduino 使用SIM900

Arduino 使用SIM900

2024-07-05 21:41| 来源: 网络整理| 查看: 265

目录

实验效果

凌顺实验室(lingshunlab.com)这次分享通过Arduino Uno 的软串口发送AT指令对SIM900模块实现打电话,仅拨通。如果需要可以语音对话的,请选择购买包含麦克风接口的模块。

arduino-use-sim900-only-call

元件说明

arduino-sim900-product

支持2,3,4G手机卡(本次实验测试了移动,联通,电信,但仅试通移动) 尺寸:49*50 mm 电脑调试时可以给USB模块供电,在数据量非常大的情况下,建议电流在1A以上。待机在80MA左右,可以设置休眠状态在10MA左右低功。 串口电路:采用TVS和磁珠保护器件来保护板子,使板子不会受到浪涌、高电压的伤害。 SIM卡电路:增加SMF05C静电释放芯片。 天线电路:保证的短且直,这样才能保证信号强度。 PCB展示:各个接口丝印标出,方便二次开发,设计时完全遵循SIM900A硬件设计手册。 一路5V 供电电源接口:我们做了保护,即使接反了也不会烧板子。电脑初期调试电脑USB供电即可;长时间传输数据用电量较大我们推荐1A以上的直流。 一路TTL接口:支持3.3V单片机和5V单片机。也就是说支持51类的5V单片机和STM32单片机。 两路天线接口:SMA天线接口,IPX MINI天线接口(默认不焊接)。 一路232 电平接口:也就是说您可以通过一根232---USB串口线直接将模块连接到电脑上调。也可以USB--TTL连接电脑,根据个人的配件情况而定。不需要多花钱买配件这就是和是别的卖家最大的区别。 引脚说明

arduino-sim900-pin-description_xn

BOM 名称 数量 Arduino Uno x1 SIM900 GSM GPRS 无线数据传输板 x1 跳线(杜邦线) 若干 接线方式

arduino-sim900-wiring_xn

提点 SIM900 AT指令文档:

熟读查看SIM900的AT指令对于使用此模块非常有用。

https://www.espruino.com/datasheets/SIM900_AT.pdf

SIM卡联网不成功,需要多尝试

凌顺实验 室(lingshunlab.com)在实际使用中,有时候会提示AT+CREG? 非返回0,1,表示手机SIM卡未能联网,需要多尝试几次,直到指令AT+CREG?返回x,1(主要看第二个数字,为1则代表联网成功,可以打电话或者发短信)。

程序代码 // by lingshunlab.com #include //加载软串口库 // 定义一个软串口 SoftwareSerial DebugSerial(10, 11); // RX = Pin 10, TX = Pin 11 char phoneNumber[] = "***********"; //替换成需要被拨打电话的号码(只需要修改""里的内容) // 读取软串口数据并显示在串口监视器中 void ReadBuffer() { // 当软串口有数据时,在硬串口中显示其信息数据 while(DebugSerial.available()){ Serial.print(char(DebugSerial.read())); } } void setup() { Serial.begin(9600); // 定义硬串口的波特率 DebugSerial.begin(9600); // 定义软串口的波特率 } void loop() { Serial.println("\r\n---------send AT command start---------\r\n"); DebugSerial.write("AT\r\n"); // 软串口发送AT指令 ,若果软串口返回「OK」,则表示模块连接开发板正确,可以互相沟通。 delay(500); // 等待500毫秒,是为了让软串口的数据飞一会(串口有数据会保存在串口的缓存中,当读取则,当然有大小限制会溢出) ReadBuffer(); // 读取软串口数据并显示在串口监视器中 // AT+CPIN // 该指令用于查询 SIM 卡的状态,主要是 PIN 码, // 如果该指令返回+CPIN:READY,则表明 SIM 卡状态正常, // 返回其他值,则有可能是没有 SIM 卡。 DebugSerial.write("AT+CPIN?\r\n"); delay(500); ReadBuffer(); // AT+CREG // 该指令用于查询AT+CREG?查看GSM是否注册成功 // 0,1 // 返回 x,1,最主要后面的1,表示联网成功 DebugSerial.write("AT+CREG?\r\n"); delay(500); ReadBuffer(); // AT+CMGF=1 // 该指令AT+CMGF=1,即可设置为文本模式。 DebugSerial.write("AT+CMGF=1\r\n"); delay(500); ReadBuffer(); // AT+CSCS // 该指令AT+CSCS,用于设置 TE 字符集,默认的为 GSM7 位缺省 字符集, // 在发送纯英文短信的时候,发送: AT+CSCS=“GSM”,设置为缺省字符集即可。 // 在发送中英文短信的时候,需要发送: AT+CSCS=“UCS2”,设置为 16 位通用 8 字节倍数编码字符 集。 DebugSerial.write("AT+CSCS=\"GSM\"\r\n"); delay(500); ReadBuffer(); // 准备开始打电话 Serial.println("Calling...."); char callCMD_buf[20] = {0}; memset(callCMD_buf, 0, 20); // 利用memset()函数的作用,把callCMD_buf里的所有元素定义为0,在这里可以想象像清空一样 strcpy(callCMD_buf, "ATD"); // 开始组合打电话的AT指令,格式为:ATD13000000000; strcat(callCMD_buf, phoneNumber); strcat(callCMD_buf, ";\r\n"); DebugSerial.write(callCMD_buf); // 向软串口发生callCMD_buf指令 delay(60000); // 等待60秒 ReadBuffer(); // 读取软串口返回的数据 Serial.println("Called!"); //拨打结束 while(1); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3